1. Field of the Invention
The present invention relates, in general, to performance monitoring, and, more particularly, to software, systems and methods for managing performance statistics using logarithmic indexing.
2. Relevant Background
With the dramatic increase in the use of computing devices to perform tasks in business, the computer networks that connect these devices have become continually more complex. The growing use of computer networks is making the management of computer networks more critical to day to day business operations. Further, the increased reliance on complex networks makes it increasingly important to ensure that system components are configured to operate at or near peak performance and that components of the distributed computer system continue to operate efficiently as varying demands are placed on the system. Administrative and service personnel use performance statistics to tune system parameters, tune component configuration, and continually analyze the system and its components so as to identify bottlenecks and improve performance.
Although complex, distributed computer systems are made up of a number of component subsystems that work cooperatively. The subsystems contribute to the overall system performance. With the complexities of systems and subsystems, the degrees of freedom enabled by storage virtualization, mulitpathing, fabric interconnections and the like, it is difficult to obtain a suitable analysis without sufficient knowledge of the system at a fine level of granularity. The tasks of measuring, monitoring and managing overall system performance are impacted by performance statistics related to component subsystems. However, conventional performance monitoring systems are better at monitoring overall system performance and have less than desirable ability to monitor performance statistics at a subsystem level.
In a distributed computing system performance is affected by the particular manner in which resources are allocated, the physical and logical paths that are defined between those resources, and the services and software implemented by the computing system, as well as a variety of other factors. Understanding the effects of each of these factors, as well as the interaction between these factors, is necessary when a system is being designed, when a system design is being validated, and when the test equipment requirements for validating a system are being determined. The ability to measure performance at a low level of granularity (e.g., at a subsystem or lower level) is desirable because it simplifies the design, validation, and test requirements.
In complex systems there is a continuing need to provide granular performance data to assist in the analysis, management and improvement of performance behavior. Examples of the use of performance data include fault analysis, configuration, accounting, performance and security management in distributed computing networks. In many cases computer systems are sold in conjunction with service level agreements (SLAs) that provide for specified performance levels. SLAs specify measurable criteria against which the performance of a resource can be compared. A resource may be any component in a distributed computing system such as computers, storage devices, switches, routers and the like. A resource may also refer to software or services implemented in the distributed system such as a web server, database server, or application server. In other words, a workstation, a server, a router, an application on a server, a network connection and the like all may be resources. To operate under an SLA, service providers attempt to allocate resources, design physical and logical connections between devices, and implement various services and applications in a manner that satisfies the criteria set out in the SLA. Accordingly, efficient collection of performance statistics is increasingly important.
In order to perform distributed system management it is necessary to have accurate and complete information about the system components such as networking and computing equipment, and services provided by those devices. However, the costs associated with gathering and managing performance data (e.g., terms of system resources) make the implementation of performance instrumentation prohibitive. Increased granularity means that the quantity of performance data that is collected and must be managed becomes quite large. The quantity of data escalates even further when the variety of types of data that are collected is increased. Accordingly, a need exists for systems, methods and software that enable collecting performance statistics in a cost-efficient manner.